Impromptu (programming Environment)
   HOME

TheInfoList



OR:

Impromptu is a
Mac OS X macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac (computer), Mac computers. Within the market of ...
programming environment for
live coding Live coding, sometimes referred to as on-the-fly programming,Wang G. & Cook P. (2004"On-the-fly Programming: Using Code as an Expressive Musical Instrument" In ''Proceedings of the 2004 International Conference on New Interfaces for Musical Expr ...
. Impromptu is built around the
Scheme A scheme is a systematic plan for the implementation of a certain idea. Scheme or schemer may refer to: Arts and entertainment * ''The Scheme'' (TV series), a BBC Scotland documentary series * The Scheme (band), an English pop band * ''The Schem ...
language, which is a member of the
Lisp A lisp is a speech impairment in which a person misarticulates sibilants (, , , , , , , ). These misarticulations often result in unclear speech. Types * A frontal lisp occurs when the tongue is placed anterior to the target. Interdental lisping ...
family of languages. The source code of its core has been opened as the Extempore project.


Description

The environment allows to make changes to a program at runtime, so variables and functions may be redefined and the changes take effect immediately. A programmer can also create and schedule code for future execution, as well as data events such as notes and graphics objects. Once an event is scheduled, execution continues. Looping is performed by using an idiom called "temporal recursion" which works by having a function asynchronously schedule a future call to itself as its final action. The library allows communicating with
Audio Units Audio Units (AU) are a system-level plug-in architecture provided by Core Audio in Apple's macOS and iOS operating systems. Audio Units are a set of application programming interface (API) services provided by the operating system to generate, ...
for audio synthesis, and with graphics layers such as
QuickTime QuickTime is an extensible multimedia framework developed by Apple Inc., capable of handling various formats of digital video, picture, sound, panoramic images, and interactivity. Created in 1991, the latest Mac version, QuickTime X, is avai ...
,
Quartz Quartz is a hard, crystalline mineral composed of silica (silicon dioxide). The atoms are linked in a continuous framework of SiO4 silicon-oxygen tetrahedra, with each oxygen being shared between two tetrahedra, giving an overall chemical form ...
,
Core Image Core Image is a pixel-accurate, near-realtime, non-destructive image processing technology in Mac OS X. Implemented as part of the QuartzCore framework of Mac OS X 10.4 and later, Core Image provides a plugin-based architecture for applying fil ...
,
OpenGL OpenGL (Open Graphics Library) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardwa ...
for
video composition Video art is an art form which relies on using video technology as a visual and audio medium. Video art emerged during the late 1960s as new consumer video technology such as video tape recorders became available outside corporate broadcasting ...
. Code written in
Objective-C Objective-C is a general-purpose, object-oriented programming language that adds Smalltalk-style messaging to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was selected by NeXT for its NeXTS ...
can be called from the editor, and also Objective-C frameworks can perform calls to the Scheme interpreter. Impromptu's Scheme interpreter was initially built from the
TinyScheme TinyScheme is a free software implementation of the Scheme programming language with a lightweight Scheme interpreter of a subset of the R5RS standard. It is meant to be used as an embedded scripting interpreter for other programs. Much of the fu ...
1.35 baseline, but it has been substantially modified since to better suit the live coding context. A real-time
garbage collector A waste collector, also known as a garbageman, garbage collector, trashman (in the US), binman or (rarely) dustman (in the UK), is a person employed by a public or private enterprise to collect and dispose of municipal solid waste (refuse) and r ...
, and
Objective-C Objective-C is a general-purpose, object-oriented programming language that adds Smalltalk-style messaging to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was selected by NeXT for its NeXTS ...
integration were added. Also, a new statically typed language called the ''Extempore Language'' has been integrated to the system. This language is syntactically Scheme-like, but semantically closer to C, and is designed for real-time sound synthesis and other computationally heavy tasks. It provides
type inference Type inference refers to the automatic detection of the type of an expression in a formal language. These include programming languages and mathematical type systems, but also natural languages in some branches of computer science and linguistics ...
and is compiled to
machine language In computer programming, machine code is any low-level programming language, consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). Each instruction causes the CPU to perform a very ...
by
LLVM LLVM is a set of compiler and toolchain technologies that can be used to develop a front end for any programming language and a back end for any instruction set architecture. LLVM is designed around a language-independent intermediate represen ...
.


Sample performance

''A Study in Keith'' is a live coding performance in Impromptu by Andrew Sorensen. The first two minutes (1:56) are silent, while the performer writes the program that will produce the introduction of the piece. From then on, he modifies the code on the fly to evolve the composition.


Extempore

The core of Impromptu has been released as
Extempore ''Ex tempore'' (Latin for "out of the moment“) is a legal term that means 'at the time'. A judge who hands down a decision in a case soon or straight after hearing it is delivering a decision ''ex tempore''. Another way a judge may deliver a de ...
under a BSD style licence. It runs under both
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which ...
and Mac OS X. It includes the Scheme interpreter, the Extempore Language compiler and the scheduler. The bindings to
Apple An apple is an edible fruit produced by an apple tree (''Malus domestica''). Apple fruit tree, trees are agriculture, cultivated worldwide and are the most widely grown species in the genus ''Malus''. The tree originated in Central Asia, wh ...
libraries are absent, but the environment can interface with dynamic libraries.


See also

*
Csound Csound is a domain-specific computer programming language for audio programming. It is called Csound because it is written in C, as opposed to some of its predecessors. It is free software, available under the LGPL-2.1-or-later. Csound was or ...
*
Comparison of audio synthesis environments Software audio synthesis environments typically consist of an audio programming language (which may be graphical) and a user environment to design/run the language in. Although many of these environments are comparable in their abilities to produ ...
*
SuperCollider A particle accelerator is a machine that uses electromagnetic fields to propel charged particles to very high speeds and energies, and to contain them in well-defined beams. Large accelerators are used for fundamental research in particle ...
*
Processing (programming language) Processing is a free graphical library and integrated development environment (IDE) built for the electronic arts, new media art, and visual design communities with the purpose of teaching non-programmers the fundamentals of computer programming ...
*
OpenFrameworks openFrameworks is an open source toolkit designed for creative coding founded by Zachary Lieberman, Theo Watson and Arturo Castro. OpenFrameworks is written in C++ and built on top of OpenGL. It runs on Microsoft Windows, macOS, Linux, iOS, ...
*
ChucK Chuck is a masculine given name or a nickname for Charles or Charlie. It may refer to: People Arts and entertainment * Chuck Alaimo, American saxophonist, leader of the Chuck Alaimo Quartet * Chuck Barris (1929–2017), American TV producer * C ...
*
List of music software This is a list of software for creating, performing, learning, analyzing, researching, broadcasting and editing music. This article only includes software, not services. For streaming services such as iHeartRadio, Pandora, Prime Music, and Spotify, ...
*
Max (software) Max, also known as Max/MSP/Jitter, is a visual programming language for music and multimedia developed and maintained by San Francisco-based software company Cycling '74. Over its more than thirty-year history, it has been used by composers, per ...
*
Pure Data Pure Data (Pd) is a visual programming language developed by Miller Puckette in the 1990s for creating interactive computer music and multimedia works. While Puckette is the main author of the program, Pd is an open-source project with a large d ...


References


Academic papers

* Sorensen, A (2010)
A Distributed Memory For Networked Livecoding Performance
International Computer Music Conference 2010, New York * Sorensen, A & Brown, A (2008)
A Computational Model For The Generation Of Orchestral Music In The Germanic Symphonic Tradition: A progress report
paper presented to the Australasian Computer Music Conference 2008, Sydney * Sorensen, A & Brown, A (2007)
aa-cell in Practice: An Approach to Musical Live Coding
paper presented to the International Computer Music Conference 2007, Copenhagen * Sorensen, A. (2005)
Impromptu: An interactive programming environment for composition and performance
a paper presented to the Australasian Computer Music Conference 2005, Brisbane: ACMA, pp. 149–153. (Note: Impromptu version discussed is obsolete) * Sorensen, A.

* Thor Magnusson,
Confessions of a Live Coder
, Proceedings of International Computer Music Conference, 2011.


Other sources

* Peter Kirn,
Thought and Performance, Live Coding Music, Explained to Anyone - Really
, Create Digital Music, 2011 * Mitchell Whitelaw,

, 2007


External links

* {{Official website Audio programming languages Live coding Articles containing video clips